///*******************************************************************************
// * Copyright (c) 2007 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// * IBM Corporation - initial API and implementation
// ******************************************************************************/
//
//package org.eclipse.ui.tests.keys;
//
//import java.util.ArrayList;
//import java.util.Collection;
//import java.util.Iterator;
//import java.util.List;
//
//import org.eclipse.core.commands.ParameterizedCommand;
//import org.eclipse.jface.bindings.Binding;
//import org.eclipse.jface.bindings.keys.KeyBinding;
//import org.eclipse.jface.bindings.keys.KeySequence;
//import org.eclipse.jface.util.IPropertyChangeListener;
//import org.eclipse.jface.util.PropertyChangeEvent;
//import org.eclipse.ui.contexts.IContextService;
//import org.eclipse.ui.internal.keys.model.BindingElement;
//import org.eclipse.ui.internal.keys.model.BindingModel;
//import org.eclipse.ui.internal.keys.model.CommonModel;
//import org.eclipse.ui.internal.keys.model.ConflictModel;
//import org.eclipse.ui.internal.keys.model.ContextElement;
//import org.eclipse.ui.internal.keys.model.ContextModel;
//import org.eclipse.ui.internal.keys.model.KeyController;
//import org.eclipse.ui.internal.keys.model.ModelElement;
//import org.eclipse.ui.internal.keys.model.SchemeElement;
//import org.eclipse.ui.internal.keys.model.SchemeModel;
//import org.eclipse.ui.keys.IBindingService;
//import org.eclipse.ui.tests.harness.util.UITestCase;
//
///**
// * @since 3.4
// *
// */
//public class KeysPreferenceModelTest extends UITestCase {
//
// private static final String ID_QUICK_SWITCH = "org.eclipse.ui.window.openEditorDropDown";
// private static final String SCHEME_EMACS_ID = "org.eclipse.ui.emacsAcceleratorConfiguration";
// private static final String ID_QUICK_ACCESS = "org.eclipse.ui.window.quickAccess";
// private static final String ID_ACTIVATE_EDITOR = "org.eclipse.ui.window.activateEditor";
// private static final String ID_ABOUT = "org.eclipse.ui.help.aboutAction";
// private static final String ID_CMD_CONFLICT1 = "org.eclipse.ui.tests.keyModel.conflict1";
// private static final String ID_CMD_CONFLICT2 = "org.eclipse.ui.tests.keyModel.conflict2";
// private static final String ID_CMD_CONFLICT3 = "org.eclipse.ui.tests.keyModel.conflict3";
// private static final String ID_CMD_CONFLICT4 = "org.eclipse.ui.tests.keyModel.conflict4";
// private static final String ID_CMD_EMACS1 = "org.eclipse.ui.tests.keyModel.emacs1";
//
// /**
// * @param testName
// */
// public KeysPreferenceModelTest(String testName) {
// super(testName);
// }
//
// public void testDefaults() throws Exception {
// KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// ContextModel cm = controller.getContextModel();
// boolean foundWindow = false;
// boolean foundDialog = false;
// Iterator i = cm.getContexts().iterator();
// while (i.hasNext()) {
// ContextElement elem = (ContextElement) i.next();
// if (elem.getId().equals(IContextService.CONTEXT_ID_WINDOW)) {
// foundWindow = true;
// } else if (elem.getId().equals(IContextService.CONTEXT_ID_DIALOG)) {
// foundDialog = true;
// }
// }
// assertTrue("No window context", foundWindow);
// assertTrue("No dialog context", foundDialog);
// assertNull(cm.getSelectedElement());
// assertNotNull(cm.getContextIdToElement().get(
// IContextService.CONTEXT_ID_DIALOG_AND_WINDOW));
//
// SchemeModel sm = controller.getSchemeModel();
// boolean foundDefault = false;
// i = sm.getSchemes().iterator();
// while (i.hasNext()) {
// SchemeElement e = (SchemeElement) i.next();
// if (e.getId().equals(
// IBindingService.DEFAULT_DEFAULT_ACTIVE_SCHEME_ID)) {
// foundDefault = true;
// }
// }
// assertTrue("No default scheme", foundDefault);
// assertEquals(IBindingService.DEFAULT_DEFAULT_ACTIVE_SCHEME_ID, sm
// .getSelectedElement().getId());
//
// ConflictModel cf = controller.getConflictModel();
// assertNull("There should not be any conflicts", cf.getConflicts());
// assertNull(cf.getSelectedElement());
//
// BindingModel bm = controller.getBindingModel();
// BindingElement quickAccess = getBindingElement(bm, ID_QUICK_ACCESS);
// assertNotNull(quickAccess);
// assertNull(bm.getSelectedElement());
// }
//
// public void testContexts() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// ContextModel cm = controller.getContextModel();
// ContextElement dialog = (ContextElement) cm.getContextIdToElement()
// .get(IContextService.CONTEXT_ID_DIALOG);
// assertNull(cm.getSelectedElement());
// assertNotNull(dialog);
//
// final ArrayList events = new ArrayList();
// // test setup vars
// controller.addPropertyChangeListener(new IPropertyChangeListener() {
// public void propertyChange(PropertyChangeEvent event) {
// events.add(event);
// }
// });
// cm.setSelectedElement(dialog);
//
// assertTrue(cm.getSelectedElement() == dialog);
//
// assertEquals(1, events.size());
//
// ContextElement window = (ContextElement) cm.getContextIdToElement()
// .get(IContextService.CONTEXT_ID_WINDOW);
// assertNotNull(window);
//
// cm.setSelectedElement(window);
// assertEquals(2, events.size());
//
// cm.setSelectedElement(null);
// assertEquals(3, events.size());
//
// PropertyChangeEvent[] expected = new PropertyChangeEvent[] {
// new PropertyChangeEvent(controller.getContextModel(),
// CommonModel.PROP_SELECTED_ELEMENT, null, dialog),
// new PropertyChangeEvent(controller.getContextModel(),
// CommonModel.PROP_SELECTED_ELEMENT, dialog, window),
// new PropertyChangeEvent(controller.getContextModel(),
// CommonModel.PROP_SELECTED_ELEMENT, window, null) };
// assertChanges(expected, events);
// }
//
// public void testBindings() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// ContextModel cm = controller.getContextModel();
// BindingModel bm = controller.getBindingModel();
// BindingElement activateEditor = getBindingElement(bm,
// ID_ACTIVATE_EDITOR);
// assertNotNull(activateEditor);
// assertNotNull(activateEditor.getContext());
// assertNull(bm.getSelectedElement());
//
// // test setup vars
// final ArrayList events = new ArrayList();
// controller.addPropertyChangeListener(new IPropertyChangeListener() {
// public void propertyChange(PropertyChangeEvent event) {
// events.add(event);
// }
// });
//
// bm.setSelectedElement(activateEditor);
//
// assertTrue(bm.getSelectedElement() == activateEditor);
// assertNotNull(cm.getSelectedElement());
// assertTrue(cm.getSelectedElement().getId().equals(
// activateEditor.getContext().getId()));
//
// PropertyChangeEvent[] expected = new PropertyChangeEvent[] {
// new PropertyChangeEvent(controller.getConflictModel(),
// CommonModel.PROP_SELECTED_ELEMENT, null, activateEditor),
// new PropertyChangeEvent(controller.getContextModel(),
// CommonModel.PROP_SELECTED_ELEMENT, null, activateEditor
// .getContext()),
// new PropertyChangeEvent(controller.getBindingModel(),
// CommonModel.PROP_SELECTED_ELEMENT, null, activateEditor), };
// assertChanges(expected, events);
//
// events.clear();
// bm.setSelectedElement(null);
// assertNull(bm.getSelectedElement());
// assertNull(cm.getSelectedElement());
//
// expected = new PropertyChangeEvent[] {
// new PropertyChangeEvent(controller.getConflictModel(),
// CommonModel.PROP_SELECTED_ELEMENT, activateEditor, null),
// new PropertyChangeEvent(controller.getContextModel(),
// CommonModel.PROP_SELECTED_ELEMENT, activateEditor
// .getContext(), null),
// new PropertyChangeEvent(controller.getBindingModel(),
// CommonModel.PROP_SELECTED_ELEMENT, activateEditor, null) };
// assertChanges(expected, events);
// }
//
// public void testBasicConflicts() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// final ConflictModel cf = controller.getConflictModel();
// final BindingModel bm = controller.getBindingModel();
// final BindingElement conflict1 = getBindingElement(bm, ID_CMD_CONFLICT1);
// assertNotNull(conflict1);
// assertEquals(Boolean.TRUE, conflict1.getConflict());
// final BindingElement activateEditor = getBindingElement(bm,
// ID_ACTIVATE_EDITOR);
// assertNotNull(activateEditor);
// assertEquals(Boolean.FALSE, activateEditor.getConflict());
//
// // test setup vars
// final ArrayList events = new ArrayList();
// controller.addPropertyChangeListener(new IPropertyChangeListener() {
// public void propertyChange(PropertyChangeEvent event) {
// events.add(event);
// }
// });
//
// bm.setSelectedElement(conflict1);
// assertEquals(conflict1, bm.getSelectedElement());
// assertEquals(conflict1, cf.getSelectedElement());
//
// final Collection conflicts = cf.getConflicts();
// assertEquals(3, conflicts.size());
//
// PropertyChangeEvent[] expected = new PropertyChangeEvent[] {
// new PropertyChangeEvent(controller.getConflictModel(),
// ConflictModel.PROP_CONFLICTS, null, conflicts),
// new PropertyChangeEvent(controller.getConflictModel(),
// CommonModel.PROP_SELECTED_ELEMENT, null, conflict1),
// new PropertyChangeEvent(controller.getContextModel(),
// CommonModel.PROP_SELECTED_ELEMENT, null, conflict1
// .getContext()),
// new PropertyChangeEvent(controller.getBindingModel(),
// CommonModel.PROP_SELECTED_ELEMENT, null, conflict1) };
//
// assertChanges(expected, events);
//
// events.clear();
// bm.setSelectedElement(activateEditor);
// assertEquals(activateEditor, bm.getSelectedElement());
//
// expected = new PropertyChangeEvent[] {
// new PropertyChangeEvent(controller.getConflictModel(),
// ConflictModel.PROP_CONFLICTS, conflicts, null),
// new PropertyChangeEvent(controller.getConflictModel(),
// CommonModel.PROP_SELECTED_ELEMENT, conflict1,
// activateEditor),
// new PropertyChangeEvent(controller.getContextModel(),
// CommonModel.PROP_SELECTED_ELEMENT, conflict1
// .getContext(), activateEditor.getContext()),
// new PropertyChangeEvent(controller.getBindingModel(),
// CommonModel.PROP_SELECTED_ELEMENT, conflict1,
// activateEditor) };
//
// assertChanges(expected, events);
// }
//
// public void testConflictSelection() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// final ConflictModel cf = controller.getConflictModel();
// final BindingModel bm = controller.getBindingModel();
// final BindingElement conflict1 = getBindingElement(bm, ID_CMD_CONFLICT1);
// final BindingElement conflict3 = getBindingElement(bm, ID_CMD_CONFLICT3);
//
// // test setup vars
// final ArrayList events = new ArrayList();
// controller.addPropertyChangeListener(new IPropertyChangeListener() {
// public void propertyChange(PropertyChangeEvent event) {
// events.add(event);
// }
// });
//
// bm.setSelectedElement(conflict1);
// assertEquals(conflict1, bm.getSelectedElement());
// assertEquals(conflict1, cf.getSelectedElement());
//
// assertEquals(4, events.size());
//
// events.clear();
//
// cf.setSelectedElement(conflict3);
// assertEquals(conflict3, bm.getSelectedElement());
// assertEquals(conflict3, cf.getSelectedElement());
//
// PropertyChangeEvent[] expected = new PropertyChangeEvent[] {
// new PropertyChangeEvent(controller.getBindingModel(),
// CommonModel.PROP_SELECTED_ELEMENT, conflict1, conflict3),
// new PropertyChangeEvent(controller.getConflictModel(),
// CommonModel.PROP_SELECTED_ELEMENT, conflict1, conflict3) };
// assertChanges(expected, events);
// }
//
// public void testCreateConflict() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// final ConflictModel cf = controller.getConflictModel();
// final BindingModel bm = controller.getBindingModel();
// BindingElement about = getBindingElement(bm, ID_ABOUT);
// assertNotNull(about);
// assertNull(about.getTrigger());
//
// BindingElement active = getBindingElement(bm, ID_ACTIVATE_EDITOR);
// assertNotNull(active);
// assertNotNull(active.getTrigger());
// assertEquals(Boolean.FALSE, active.getConflict());
//
// bm.setSelectedElement(about);
//
// about.setTrigger(KeySequence.getInstance("F12"));
// assertEquals(Boolean.TRUE, about.getConflict());
// assertEquals(Boolean.TRUE, active.getConflict());
// assertEquals(about, cf.getSelectedElement());
//
// about.setTrigger(KeySequence.getInstance("F12 A"));
// assertEquals(Boolean.FALSE, about.getConflict());
// assertEquals(Boolean.FALSE, active.getConflict());
// assertEquals(about, cf.getSelectedElement());
// assertNull(cf.getConflicts());
//
// about.setTrigger(null);
// assertEquals(Boolean.FALSE, about.getConflict());
// assertEquals(Boolean.FALSE, active.getConflict());
// assertEquals(about, cf.getSelectedElement());
// assertNull(cf.getConflicts());
// }
//
// public void testConflictRemove() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// final ConflictModel cf = controller.getConflictModel();
// final BindingModel bm = controller.getBindingModel();
// BindingElement about = getBindingElement(bm, ID_ABOUT);
// assertNotNull(about);
// assertNull(about.getTrigger());
//
// BindingElement active = getBindingElement(bm, ID_ACTIVATE_EDITOR);
// assertNotNull(active);
// assertNotNull(active.getTrigger());
// assertEquals(Boolean.FALSE, active.getConflict());
//
// bm.setSelectedElement(about);
//
// about.setTrigger(KeySequence.getInstance("F12"));
// assertEquals(Boolean.TRUE, about.getConflict());
// assertEquals(Boolean.TRUE, active.getConflict());
// assertEquals(about, cf.getSelectedElement());
//
// bm.remove();
// assertEquals(Boolean.FALSE, about.getConflict());
// assertEquals(Boolean.FALSE, active.getConflict());
// assertEquals(about, cf.getSelectedElement());
// assertNull(cf.getConflicts());
// }
//
// public void testConflictRestore() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// final ConflictModel cf = controller.getConflictModel();
// final BindingModel bm = controller.getBindingModel();
// BindingElement about = getBindingElement(bm, ID_ABOUT);
// assertNotNull(about);
// assertNull(about.getTrigger());
//
// BindingElement active = getBindingElement(bm, ID_ACTIVATE_EDITOR);
// assertNotNull(active);
// assertNotNull(active.getTrigger());
// assertEquals(Boolean.FALSE, active.getConflict());
//
// bm.setSelectedElement(about);
//
// about.setTrigger(KeySequence.getInstance("F12"));
// assertEquals(Boolean.TRUE, about.getConflict());
// assertEquals(Boolean.TRUE, active.getConflict());
// assertEquals(about, cf.getSelectedElement());
//
// bm.restoreBinding(controller.getContextModel());
//
// active = getBindingElement(bm, ID_ACTIVATE_EDITOR);
// about = getBindingElement(bm, ID_ABOUT);
//
// assertEquals(Boolean.FALSE, about.getConflict());
// assertEquals(Boolean.FALSE, active.getConflict());
// assertEquals(bm.getSelectedElement(), cf.getSelectedElement());
// assertNull(cf.getConflicts());
// }
//
// public void testUpdateContext() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// final ContextModel cm = controller.getContextModel();
// final ContextElement dialog = (ContextElement) cm
// .getContextIdToElement().get(IContextService.CONTEXT_ID_DIALOG);
// final ContextElement window = (ContextElement) cm
// .getContextIdToElement().get(IContextService.CONTEXT_ID_WINDOW);
//
// final BindingModel bm = controller.getBindingModel();
// final BindingElement conflict2 = getBindingElement(bm, ID_CMD_CONFLICT2);
// final Binding c2model = (Binding) conflict2.getModelObject();
// assertEquals(dialog, conflict2.getContext());
//
// bm.setSelectedElement(conflict2);
// assertEquals(dialog, cm.getSelectedElement());
//
// // test setup vars
// final ArrayList events = new ArrayList();
// controller.addPropertyChangeListener(new IPropertyChangeListener() {
// public void propertyChange(PropertyChangeEvent event) {
// events.add(event);
// }
// });
//
// cm.setSelectedElement(window);
// assertEquals(window, ((BindingElement) bm.getSelectedElement())
// .getContext());
// assertNotSame(c2model, conflict2.getModelObject());
//
// PropertyChangeEvent[] expected = new PropertyChangeEvent[] {
// new PropertyChangeEvent(conflict2,
// BindingElement.PROP_CONFLICT, Boolean.TRUE,
// Boolean.FALSE),
// new PropertyChangeEvent(conflict2, BindingElement.PROP_CONTEXT,
// dialog, window),
// new PropertyChangeEvent(conflict2,
// BindingElement.PROP_USER_DELTA, new Integer(
// Binding.SYSTEM), new Integer(Binding.USER)),
// new PropertyChangeEvent(conflict2,
// ModelElement.PROP_MODEL_OBJECT, c2model, conflict2
// .getModelObject()),
// new PropertyChangeEvent(cm, CommonModel.PROP_SELECTED_ELEMENT,
// dialog, window), };
// assertChanges(expected, events);
// }
//
// public void testUpdateKeySequence() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// final ContextModel cm = controller.getContextModel();
// final ContextElement dialog = (ContextElement) cm
// .getContextIdToElement().get(IContextService.CONTEXT_ID_DIALOG);
//
// final BindingModel bm = controller.getBindingModel();
// final BindingElement conflict1 = getBindingElement(bm, ID_CMD_CONFLICT1);
// final BindingElement conflict2 = getBindingElement(bm, ID_CMD_CONFLICT2);
// final BindingElement conflict3 = getBindingElement(bm, ID_CMD_CONFLICT3);
// final Binding c2model = (Binding) conflict2.getModelObject();
// final Binding c3model = (Binding) conflict3.getModelObject();
// final ParameterizedCommand c3parameterized = c3model
// .getParameterizedCommand();
// assertEquals(dialog, conflict2.getContext());
// assertTrue(c2model instanceof KeyBinding);
// bm.setSelectedElement(conflict2);
// assertEquals(dialog, cm.getSelectedElement());
//
// // test setup vars
// final ArrayList events = new ArrayList();
// controller.addPropertyChangeListener(new IPropertyChangeListener() {
// public void propertyChange(PropertyChangeEvent event) {
// events.add(event);
// }
// });
//
// KeySequence oldKeySequence = (KeySequence) conflict2.getTrigger();
// KeySequence ctrl5 = KeySequence.getInstance("CTRL+5 N");
// Object bindingConflict1 = conflict1.getModelObject();
// conflict2.setTrigger(ctrl5);
// ConflictModel conflictModel = controller.getConflictModel();
// ContextModel contextModel = controller.getContextModel();
// ArrayList oldValue = new ArrayList();
// oldValue.add(conflict3);
//
// assertEquals(dialog, ((BindingElement) bm.getSelectedElement())
// .getContext());
// assertTrue(conflict2.getModelObject() instanceof KeyBinding);
// PropertyChangeEvent[] expected = new PropertyChangeEvent[] {
// new PropertyChangeEvent(conflict2,
// BindingElement.PROP_CONFLICT, Boolean.TRUE,
// Boolean.FALSE),
// new PropertyChangeEvent(conflict2,
// BindingElement.PROP_USER_DELTA, new Integer(
// Binding.SYSTEM), new Integer(Binding.USER)),
// new PropertyChangeEvent(controller.getConflictModel(),
// ConflictModel.PROP_CONFLICTS_REMOVE, null, conflict2),
// new PropertyChangeEvent(conflict2,
// ModelElement.PROP_MODEL_OBJECT, c2model, conflict2
// .getModelObject()),
// new PropertyChangeEvent(conflict1,
// BindingElement.PROP_CONFLICT, Boolean.TRUE,
// Boolean.FALSE),
// new PropertyChangeEvent(
// conflict1,
// BindingElement.PROP_CONTEXT,
// ((BindingElement) bm.getSelectedElement()).getContext(),
// null),
// new PropertyChangeEvent(conflictModel,
// ConflictModel.PROP_CONFLICTS_REMOVE, null, conflict1),
// new PropertyChangeEvent(conflict3,
// BindingElement.PROP_CONFLICT, Boolean.TRUE,
// Boolean.FALSE),
// new PropertyChangeEvent(conflictModel,
// ConflictModel.PROP_CONFLICTS, oldValue, null),
// new PropertyChangeEvent(contextModel,
// CommonModel.PROP_SELECTED_ELEMENT, dialog, null),
// new PropertyChangeEvent(conflict1,
// ModelElement.PROP_MODEL_OBJECT, bindingConflict1,
// conflict1.getModelObject()),
// new PropertyChangeEvent(conflict1, BindingElement.PROP_TRIGGER,
// oldKeySequence, null),
// new PropertyChangeEvent(conflict3, BindingElement.PROP_CONTEXT,
// dialog, null),
// new PropertyChangeEvent(conflict3,
// ModelElement.PROP_MODEL_OBJECT, c3model,
// c3parameterized),
// new PropertyChangeEvent(conflict3,
// BindingElement.PROP_TRIGGER, oldKeySequence, null),
// new PropertyChangeEvent(bm,
// BindingModel.PROP_CONFLICT_ELEMENT_MAP, null, conflict3),
// new PropertyChangeEvent(conflict2, BindingElement.PROP_TRIGGER,
// oldKeySequence, ctrl5), };
// assertChanges(expected, events);
// }
//
// public void testCreateKeyBinding() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// final ContextModel cm = controller.getContextModel();
// final ContextElement window = (ContextElement) cm
// .getContextIdToElement().get(IContextService.CONTEXT_ID_WINDOW);
//
// final BindingModel bm = controller.getBindingModel();
// final BindingElement conflict4 = getBindingElement(bm, ID_CMD_CONFLICT4);
// assertNull(conflict4.getContext());
// Object c4model = conflict4.getModelObject();
// assertTrue(c4model instanceof ParameterizedCommand);
//
// bm.setSelectedElement(conflict4);
// assertNull(cm.getSelectedElement());
//
// // test setup vars
// final ArrayList events = new ArrayList();
// controller.addPropertyChangeListener(new IPropertyChangeListener() {
// public void propertyChange(PropertyChangeEvent event) {
// events.add(event);
// }
// });
//
// KeySequence ctrl5 = KeySequence.getInstance("CTRL+5 N");
// conflict4.setTrigger(ctrl5);
// assertEquals(window, ((BindingElement) bm.getSelectedElement())
// .getContext());
// assertTrue(conflict4.getModelObject() instanceof KeyBinding);
// assertEquals(cm.getSelectedElement(), conflict4.getContext());
//
// PropertyChangeEvent[] expected = new PropertyChangeEvent[] {
// new PropertyChangeEvent(conflict4, BindingElement.PROP_CONTEXT,
// null, window),
// new PropertyChangeEvent(conflict4,
// BindingElement.PROP_USER_DELTA, new Integer(
// Binding.SYSTEM), new Integer(Binding.USER)),
// new PropertyChangeEvent(cm, CommonModel.PROP_SELECTED_ELEMENT,
// null, conflict4.getContext()),
// new PropertyChangeEvent(conflict4,
// ModelElement.PROP_MODEL_OBJECT, c4model, conflict4
// .getModelObject()),
// new PropertyChangeEvent(conflict4, BindingElement.PROP_TRIGGER,
// null, ctrl5), };
// assertChanges(expected, events);
// }
//
// public void testChangeSchemes() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// SchemeModel sm = controller.getSchemeModel();
// SchemeElement emacsScheme = null;
// Iterator i = sm.getSchemes().iterator();
// while (i.hasNext()) {
// SchemeElement e = (SchemeElement) i.next();
// if (e.getId().equals(SCHEME_EMACS_ID)) {
// emacsScheme = e;
// }
// }
// assertNotNull(emacsScheme);
//
// BindingModel bm = controller.getBindingModel();
// BindingElement quickSwitch = null;
// int quickCount = 0;
// i = bm.getBindings().iterator();
// while (i.hasNext()) {
// BindingElement e = (BindingElement) i.next();
// if (e.getId().equals(ID_QUICK_SWITCH)) {
// quickSwitch = e;
// quickCount++;
// }
// }
// assertNotNull(quickSwitch);
// assertEquals(1, quickCount);
//
// sm.setSelectedElement(emacsScheme);
//
// i = bm.getBindings().iterator();
// ArrayList quick2 = new ArrayList();
// boolean foundOriginal = false;
// while (i.hasNext()) {
// BindingElement e = (BindingElement) i.next();
// if (e.getId().equals(ID_QUICK_SWITCH)) {
// quick2.add(e);
// if (e == quickSwitch) {
// foundOriginal = true;
// }
// }
// }
// assertEquals(2, quick2.size());
// assertTrue(foundOriginal);
// }
//
// public void testChangeSchemesTwice() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// SchemeModel sm = controller.getSchemeModel();
// SchemeElement emacsScheme = null;
// SchemeElement defaultScheme = null;
// Iterator i = sm.getSchemes().iterator();
// while (i.hasNext()) {
// SchemeElement e = (SchemeElement) i.next();
// if (e.getId().equals(SCHEME_EMACS_ID)) {
// emacsScheme = e;
// } else if (e.getId().equals(
// IBindingService.DEFAULT_DEFAULT_ACTIVE_SCHEME_ID)) {
// defaultScheme = e;
// }
// }
// assertNotNull(emacsScheme);
// assertNotNull(defaultScheme);
//
// BindingModel bm = controller.getBindingModel();
// BindingElement quickSwitch = null;
// int quickCount = 0;
// i = bm.getBindings().iterator();
// while (i.hasNext()) {
// BindingElement e = (BindingElement) i.next();
// if (e.getId().equals(ID_QUICK_SWITCH)) {
// quickSwitch = e;
// quickCount++;
// }
// }
// assertNotNull(quickSwitch);
// assertEquals(1, quickCount);
//
// sm.setSelectedElement(emacsScheme);
//
// i = bm.getBindings().iterator();
// ArrayList quick2 = new ArrayList();
// boolean foundOriginal = false;
// while (i.hasNext()) {
// BindingElement e = (BindingElement) i.next();
// if (e.getId().equals(ID_QUICK_SWITCH)) {
// quick2.add(e);
// if (e == quickSwitch) {
// foundOriginal = true;
// }
// }
// }
// assertEquals(2, quick2.size());
// assertTrue(foundOriginal);
//
// sm.setSelectedElement(defaultScheme);
//
// i = bm.getBindings().iterator();
// quick2.clear();
// foundOriginal = false;
// while (i.hasNext()) {
// BindingElement e = (BindingElement) i.next();
// if (e.getId().equals(ID_QUICK_SWITCH)) {
// quick2.add(e);
// if (e == quickSwitch) {
// foundOriginal = true;
// }
// }
// }
// assertEquals(1, quick2.size());
// assertTrue(foundOriginal);
// }
//
// public void testSchemesWithNoDefaultBinding() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// final SchemeModel sm = controller.getSchemeModel();
// SchemeElement emacsScheme = null;
// SchemeElement defaultScheme = null;
// Iterator i = sm.getSchemes().iterator();
// while (i.hasNext()) {
// SchemeElement e = (SchemeElement) i.next();
// if (e.getId().equals(SCHEME_EMACS_ID)) {
// emacsScheme = e;
// } else if (e.getId().equals(
// IBindingService.DEFAULT_DEFAULT_ACTIVE_SCHEME_ID)) {
// defaultScheme = e;
// }
// }
// assertNotNull(emacsScheme);
// assertNotNull(defaultScheme);
//
// final BindingModel bm = controller.getBindingModel();
// BindingElement emacsElement = getBindingElement(bm, ID_CMD_EMACS1);
// assertNotNull(emacsElement);
// assertTrue(emacsElement.getModelObject() instanceof ParameterizedCommand);
//
// sm.setSelectedElement(emacsScheme);
//
// emacsElement = getBindingElement(bm, ID_CMD_EMACS1);
// assertTrue(emacsElement.getModelObject() instanceof KeyBinding);
//
// sm.setSelectedElement(defaultScheme);
//
// emacsElement = getBindingElement(bm, ID_CMD_EMACS1);
// assertTrue(emacsElement.getModelObject() instanceof ParameterizedCommand);
// }
//
// public void testCopyBinding() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// BindingModel bm = controller.getBindingModel();
// BindingElement activateEditor = null;
// ArrayList activates = new ArrayList();
// Iterator i = bm.getBindings().iterator();
// while (i.hasNext()) {
// BindingElement be = (BindingElement) i.next();
// if (be.getId().equals(ID_ACTIVATE_EDITOR)) {
// activates.add(be);
// if (be.getModelObject() instanceof KeyBinding) {
// activateEditor = be;
// }
// }
// }
// assertEquals(1, activates.size());
// assertNotNull(activateEditor);
//
// bm.setSelectedElement(activateEditor);
// bm.copy();
// activates.clear();
// i = bm.getBindings().iterator();
// while (i.hasNext()) {
// BindingElement be = (BindingElement) i.next();
// if (be.getId().equals(ID_ACTIVATE_EDITOR)) {
// activates.add(be);
// }
// }
// assertEquals(2, activates.size());
// }
//
// public void testCopyCommand() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// BindingModel bm = controller.getBindingModel();
// BindingElement conflict4 = null;
// ArrayList activates = new ArrayList();
// Iterator i = bm.getBindings().iterator();
// while (i.hasNext()) {
// BindingElement be = (BindingElement) i.next();
// if (be.getId().equals(ID_CMD_CONFLICT4)) {
// activates.add(be);
// if (be.getModelObject() instanceof ParameterizedCommand) {
// conflict4 = be;
// }
// }
// }
// assertEquals(1, activates.size());
// assertNotNull(conflict4);
//
// bm.setSelectedElement(conflict4);
// bm.copy();
// activates.clear();
// i = bm.getBindings().iterator();
// while (i.hasNext()) {
// BindingElement be = (BindingElement) i.next();
// if (be.getId().equals(ID_CMD_CONFLICT4)) {
// activates.add(be);
// }
// }
// assertEquals(1, activates.size());
// }
//
// public void testRemoveActiveEditor() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// BindingModel bm = controller.getBindingModel();
// BindingElement activateEditor = getBindingElement(bm,
// ID_ACTIVATE_EDITOR);
//
// assertNotNull(activateEditor);
// assertTrue(activateEditor.getModelObject() instanceof KeyBinding);
//
// bm.setSelectedElement(activateEditor);
// bm.remove();
//
// assertTrue(activateEditor.getModelObject() instanceof ParameterizedCommand);
// }
//
// public void testRestoreBinding() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// BindingModel bm = controller.getBindingModel();
// BindingElement activateEditor = getBindingElement(bm,
// ID_ACTIVATE_EDITOR);
//
// bm.setSelectedElement(activateEditor);
//
// KeySequence ctrl5 = KeySequence.getInstance("CTRL+5 N");
// activateEditor.setTrigger(ctrl5);
//
// assertEquals(new Integer(Binding.USER), activateEditor.getUserDelta());
// bm.copy();
// BindingElement activeTwo = (BindingElement) bm.getSelectedElement();
// assertFalse(activateEditor == activeTwo);
//
// activeTwo.setTrigger(KeySequence.getInstance("CTRL+5 M"));
// assertEquals(new Integer(Binding.USER), activeTwo.getUserDelta());
//
// ArrayList activates = new ArrayList();
// Iterator i = bm.getBindings().iterator();
// while (i.hasNext()) {
// BindingElement be = (BindingElement) i.next();
// if (be.getId().equals(ID_ACTIVATE_EDITOR)) {
// activates.add(be);
// }
// }
// assertEquals(2, activates.size());
//
// bm.restoreBinding(controller.getContextModel());
//
// activates = new ArrayList();
// i = bm.getBindings().iterator();
// while (i.hasNext()) {
// BindingElement be = (BindingElement) i.next();
// if (be.getId().equals(ID_ACTIVATE_EDITOR)) {
// activates.add(be);
// activateEditor = be;
// }
// }
// assertEquals(1, activates.size());
// assertEquals(new Integer(Binding.SYSTEM), activateEditor.getUserDelta());
// }
//
// public void testRestoreCommand() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// final ContextModel cm = controller.getContextModel();
// final ContextElement window = (ContextElement) cm
// .getContextIdToElement().get(IContextService.CONTEXT_ID_WINDOW);
//
// final BindingModel bm = controller.getBindingModel();
// BindingElement conflict4 = getBindingElement(bm, ID_CMD_CONFLICT4);
// assertNull(conflict4.getContext());
// Object c4model = conflict4.getModelObject();
// assertTrue(c4model instanceof ParameterizedCommand);
//
// bm.setSelectedElement(conflict4);
// assertNull(cm.getSelectedElement());
//
// KeySequence ctrl5 = KeySequence.getInstance("CTRL+5 N");
// conflict4.setTrigger(ctrl5);
// assertEquals(window, ((BindingElement) bm.getSelectedElement())
// .getContext());
// assertTrue(conflict4.getModelObject() instanceof KeyBinding);
//
// bm.setSelectedElement(conflict4);
// bm.restoreBinding(cm);
//
// conflict4 = getBindingElement(bm, ID_CMD_CONFLICT4);
// assertTrue(conflict4.getModelObject() instanceof ParameterizedCommand);
// }
//
// public void testRestoreContext() throws Exception {
// final KeyController controller = new KeyController();
// controller.init(getWorkbench());
//
// final ContextModel cm = controller.getContextModel();
// final ContextElement dialog = (ContextElement) cm
// .getContextIdToElement().get(IContextService.CONTEXT_ID_DIALOG);
//
// final BindingModel bm = controller.getBindingModel();
// BindingElement activateEditor = getBindingElement(bm,
// ID_ACTIVATE_EDITOR);
// activateEditor.setContext(dialog);
//
// bm.setSelectedElement(activateEditor);
// bm.restoreBinding(cm);
//
// activateEditor = getBindingElement(bm, ID_ACTIVATE_EDITOR);
// assertNotNull(activateEditor);
// }
//
// private void assertChangeEvent(int eventNum, PropertyChangeEvent expected,
// PropertyChangeEvent event) {
// assertEquals("source: " + eventNum, expected.getSource(), event
// .getSource());
// assertEquals("property: " + eventNum, expected.getProperty(), event
// .getProperty());
// assertEquals("old: " + eventNum, expected.getOldValue(), event
// .getOldValue());
// assertEquals("new: " + eventNum, expected.getNewValue(), event
// .getNewValue());
// }
//
// private void assertChanges(PropertyChangeEvent[] expected, List events) {
// assertEquals("events length", expected.length, events.size());
// for (int i = 0; i < expected.length; i++) {
// assertChangeEvent(i, expected[i], (PropertyChangeEvent) events
// .get(i));
// }
// }
//
// private BindingElement getBindingElement(BindingModel bm, String bindingId) {
// BindingElement quickAccess = null;
// Iterator i = bm.getBindings().iterator();
// while (i.hasNext()) {
// BindingElement e = (BindingElement) i.next();
// if (e.getId().equals(bindingId)) {
// quickAccess = e;
// }
// }
// return quickAccess;
// }
//}